package Repositorio;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import Dados.Medico;

public class RepositorioMedico {
	private Statement stmt;
	private String sqlStatement;
	public RepositorioMedico() {
		stmt = Conexao.getInstance().stmt;
	}
	public void cadastrarMedico(Medico med) throws SQLException {
		RepositorioUsuario repUsuario = new RepositorioUsuario();
		if(!repUsuario.verificarUsuario(med.getCpf())) {
			repUsuario.cadastrarUsuario(med);
		}
		sqlStatement = "INSERT INTO Medico VALUES('"+med.getCpf()+"','"+med.getCRM()+"')";
		stmt.executeUpdate(sqlStatement);
		RepositorioMedicoEspecialidade repMedEsp = new RepositorioMedicoEspecialidade();
		repMedEsp.cadastrarMedicoEspecialidade(med.getCRM(), med.getEspecialidade());
	}
	public void editarMedico(Medico med) throws SQLException {
		RepositorioUsuario repUsuario = new RepositorioUsuario();
		repUsuario.editarUsuario(med);
		sqlStatement = "UPDATE Medico SET CRM='"+med.getCRM()+"' WHERE cpf='"+med.getCpf()+"'";
		stmt.executeUpdate(sqlStatement);
		RepositorioMedicoEspecialidade repMedEsp = new RepositorioMedicoEspecialidade();
		repMedEsp.removerMedicoEspecialidade(med.getCRM());
		repMedEsp.cadastrarMedicoEspecialidade(med.getCRM(), med.getEspecialidade());
	}
	public void removerMedico(String cpf) throws SQLException {
		sqlStatement = "DELETE FROM Medico WHERE cpf='"+cpf+"'";
		stmt.executeUpdate(sqlStatement);
		RepositorioUsuario repUsuario = new RepositorioUsuario();
		repUsuario.removerUsuario(cpf);
	}
	public Medico consultarMedico(String cpf) throws SQLException {
		RepositorioUsuario repUsuario = new RepositorioUsuario();
		RepositorioMedicoEspecialidade repMedEsp = new RepositorioMedicoEspecialidade();
		sqlStatement = "SELECT CRM FROM Medico WHERE cpf='"+cpf+"'";
		ResultSet rs = stmt.executeQuery(sqlStatement);
		rs.next();
		String crm = rs.getString("CRM");
		Medico med = new Medico(repUsuario.consultarUsuario(cpf), crm, repMedEsp.consultarEspecialidadePorMedico(crm));
		return med;
	}
	public boolean verificarMedico(String cpf) throws SQLException {
		boolean ret;
		sqlStatement = "SELECT * FROM Medico WHERE cpf='"+cpf+"'";
		ResultSet rs = stmt.executeQuery(sqlStatement);
		if(rs.next()) {
			ret = true;
		} else {
			ret = false;
		}
		return ret;
	}
};
